\section{R\'{e}f\'{e}rence de la classe CSymbol}
\label{classCSymbol}\index{CSymbol@{CSymbol}}
Classe d\'{e}crivant un symbole.  


{\tt \#include $<$symbols.h$>$}

Graphe de collaboration de CSymbol:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=46pt]{classCSymbol__coll__graph}
\end{center}
\end{figure}
\subsection*{Fonctions membres publiques}
\begin{CompactItemize}
\item 
{\bf CSymbol} ()
\begin{CompactList}\small\item\em Constructeur de base, cr\'{e}e un symbole invalide. \item\end{CompactList}\item 
{\bf CSymbol} ({\bf CType} t)
\begin{CompactList}\small\item\em Cr\'{e}e un symbole de type donn\'{e}, lui affecte un Symbol\-Id. \item\end{CompactList}\item 
{\bf CSymbol} ({\bf Str\-Id} {\bf strid}, {\bf CType} t)
\begin{CompactList}\small\item\em Cr\'{e}e un symbole pour une variable d\'{e}clar\'{e}e dans le code source. Lui affecte un Symbol\-Id. \item\end{CompactList}\item 
{\bf CSymbol} ({\bf Symbol\-Id} {\bf id}, {\bf Str\-Id} {\bf strid}, {\bf CType} t)
\begin{CompactList}\small\item\em Constructeur avec toutes les initialisations. \item\end{CompactList}\item 
void {\bf convert} ({\bf CType} t)
\begin{CompactList}\small\item\em Convertit le symbole vers un type donn\'{e}. \item\end{CompactList}\item 
bool {\bf is\-Valid} ()
\begin{CompactList}\small\item\em Retourne si le symbole est valide ou non. \item\end{CompactList}\end{CompactItemize}
\begin{Indent}{\bf }\par
\begin{CompactItemize}
\item 
{\bf Symbol\-Id} {\bf get\-Id} ()
\item 
{\bf Str\-Id} {\bf get\-Str\-Id} ()
\item 
{\bf CType} {\bf get\-Type} ()
\end{CompactItemize}
\end{Indent}
\subsection*{Fonctions membres publiques statiques}
\begin{CompactItemize}
\item 
static void {\bf convert2} ({\bf CSymbol} $\ast$s1, {\bf CSymbol} $\ast$s2)
\begin{CompactList}\small\item\em Convertit le symbole le plus faible vers le symbole le plus fort. \item\end{CompactList}\end{CompactItemize}
\subsection*{Attributs priv\'{e}s}
\begin{CompactItemize}
\item 
{\bf Symbol\-Id} {\bf id}
\begin{CompactList}\small\item\em Identifiant du symbole. \item\end{CompactList}\item 
{\bf Str\-Id} {\bf strid}
\begin{CompactList}\small\item\em Identifiant de nom de variable associ\'{e} (si existant). \item\end{CompactList}\item 
{\bf CType} {\bf type}
\begin{CompactList}\small\item\em Type du symbole. \item\end{CompactList}\end{CompactItemize}


\subsection{Description d\'{e}taill\'{e}e}
Classe d\'{e}crivant un symbole. 

Un symbole associ\'{e} \`{a} une variable d\'{e}clar\'{e}e dans le code source poss\`{e}de un String\-Id. 



D\'{e}finition \`{a} la ligne 34 du fichier symbols.h.

\subsection{Documentation des contructeurs et destructeur}
\index{CSymbol@{CSymbol}!CSymbol@{CSymbol}}
\index{CSymbol@{CSymbol}!CSymbol@{CSymbol}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}CSymbol::CSymbol ()}\label{classCSymbol_378e47d3cbb2878df8c49dc38f54b2c6}


Constructeur de base, cr\'{e}e un symbole invalide. 



D\'{e}finition \`{a} la ligne 23 du fichier symbols.cpp.

R\'{e}f\'{e}rences strid, STRID\_\-NULL, SYMBOLID\_\-NULL, et type.\index{CSymbol@{CSymbol}!CSymbol@{CSymbol}}
\index{CSymbol@{CSymbol}!CSymbol@{CSymbol}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}CSymbol::CSymbol ({\bf CType} {\em t})}\label{classCSymbol_28c268ab6a6d1e27514c4896165d242a}


Cr\'{e}e un symbole de type donn\'{e}, lui affecte un Symbol\-Id. 



D\'{e}finition \`{a} la ligne 30 du fichier symbols.cpp.

R\'{e}f\'{e}rences decl\-Manager, CDecl\-Manager::get\-Symbol\-Id(), strid, STRID\_\-NULL, et type.

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=254pt]{classCSymbol_28c268ab6a6d1e27514c4896165d242a_cgraph}
\end{center}
\end{figure}
\index{CSymbol@{CSymbol}!CSymbol@{CSymbol}}
\index{CSymbol@{CSymbol}!CSymbol@{CSymbol}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}CSymbol::CSymbol ({\bf Str\-Id} {\em strid}, {\bf CType} {\em t})}\label{classCSymbol_b86b63c0f7c3d22b106846dc9baaead5}


Cr\'{e}e un symbole pour une variable d\'{e}clar\'{e}e dans le code source. Lui affecte un Symbol\-Id. 



D\'{e}finition \`{a} la ligne 37 du fichier symbols.cpp.

R\'{e}f\'{e}rences decl\-Manager, CDecl\-Manager::get\-Symbol\-Id(), et type.

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=254pt]{classCSymbol_b86b63c0f7c3d22b106846dc9baaead5_cgraph}
\end{center}
\end{figure}
\index{CSymbol@{CSymbol}!CSymbol@{CSymbol}}
\index{CSymbol@{CSymbol}!CSymbol@{CSymbol}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}CSymbol::CSymbol ({\bf Symbol\-Id} {\em id}, {\bf Str\-Id} {\em strid}, {\bf CType} {\em t})}\label{classCSymbol_092c3791145f56dfe197cbf9a6c9df30}


Constructeur avec toutes les initialisations. 



D\'{e}finition \`{a} la ligne 44 du fichier symbols.cpp.

R\'{e}f\'{e}rences type.

\subsection{Documentation des fonctions membres}
\index{CSymbol@{CSymbol}!convert@{convert}}
\index{convert@{convert}!CSymbol@{CSymbol}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CSymbol::convert ({\bf CType} {\em t})}\label{classCSymbol_215f232133a78012d9235c25ffd1b09b}


Convertit le symbole vers un type donn\'{e}. 

Ajoute les instructions n\'{e}cessaires. Si les types sont identiques, rien n'est fait. La conversion est faite sur place. En cas d'\'{e}chec, le type du symbole devient invalide et un erreur est g\'{e}n\'{e}r\'{e}e. Un warning est g\'{e}n\'{e}r\'{e} en cas de conversion avec perte. 

D\'{e}finition \`{a} la ligne 52 du fichier symbols.cpp.

R\'{e}f\'{e}rences CType::can\-Convert\-To(), ERR\_\-CONVERT\_\-INVALID, error\-Error(), id, CType::is\-Valid(), et type.

R\'{e}f\'{e}renc\'{e} par process\-Add(), process\-Aff(), process\-Not(), process\-Op1And(), process\-Op1Or(), process\-Op2And(), process\-Op2Or(), et process\-Sub().

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=141pt]{classCSymbol_215f232133a78012d9235c25ffd1b09b_cgraph}
\end{center}
\end{figure}
\index{CSymbol@{CSymbol}!convert2@{convert2}}
\index{convert2@{convert2}!CSymbol@{CSymbol}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}void CSymbol::convert2 ({\bf CSymbol} $\ast$ {\em s1}, {\bf CSymbol} $\ast$ {\em s2})\hspace{0.3cm}{\tt  [static]}}\label{classCSymbol_4b72cd5993bfedc03266b696f608e362}


Convertit le symbole le plus faible vers le symbole le plus fort. 

En cas d'\'{e}chec les symboles prennent un type invalide et une erreur est g\'{e}n\'{e}r\'{e}e. Un warning est g\'{e}n\'{e}r\'{e} en cas de conversion avec perte. Cette fonction permet de s'assure que deux symboles sont de m\^{e}me type avant de les utiliser dans un calcul. 

D\'{e}finition \`{a} la ligne 89 du fichier symbols.cpp.

R\'{e}f\'{e}rences CType::can\-Convert\-To(), ERR\_\-CONVERT\_\-UNCOMPATIBLE, error\-Error(), et type.

R\'{e}f\'{e}renc\'{e} par process\-Add(), process\-Div(), process\-Eql(), process\-Grt(), process\-Low(), process\-Mul(), process\-Neq(), et process\-Sub().

Voici le graphe d'appel pour cette fonction:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=144pt]{classCSymbol_4b72cd5993bfedc03266b696f608e362_cgraph}
\end{center}
\end{figure}
\index{CSymbol@{CSymbol}!getId@{getId}}
\index{getId@{getId}!CSymbol@{CSymbol}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf Symbol\-Id} CSymbol::get\-Id ()\hspace{0.3cm}{\tt  [inline]}}\label{classCSymbol_bdd09870aaccab84924d25f1a052ab0d}


Accesseurs 

D\'{e}finition \`{a} la ligne 44 du fichier symbols.h.

R\'{e}f\'{e}rences id.

R\'{e}f\'{e}renc\'{e} par CDecl\-Manager::free\-Symbol(), process\-Const\-Bool(), process\-Const\-Float(), process\-Const\-Int(), process\-Deref(), process\-Div(), process\-Eql(), process\-Grt(), process\-If\-Not(), process\-Low(), process\-Mul(), process\-Neq(), et process\-Ref().\index{CSymbol@{CSymbol}!getStrId@{getStrId}}
\index{getStrId@{getStrId}!CSymbol@{CSymbol}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf Str\-Id} CSymbol::get\-Str\-Id ()\hspace{0.3cm}{\tt  [inline]}}\label{classCSymbol_c65e831c63d2dc82811821a8f1aeeea0}




D\'{e}finition \`{a} la ligne 45 du fichier symbols.h.

R\'{e}f\'{e}rences strid.

R\'{e}f\'{e}renc\'{e} par CDecl\-Manager::free\-Symbol().\index{CSymbol@{CSymbol}!getType@{getType}}
\index{getType@{getType}!CSymbol@{CSymbol}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf CType} CSymbol::get\-Type ()\hspace{0.3cm}{\tt  [inline]}}\label{classCSymbol_c02b144a76858c55b0f4d8fe39a57faf}




D\'{e}finition \`{a} la ligne 46 du fichier symbols.h.

R\'{e}f\'{e}rences type.

R\'{e}f\'{e}renc\'{e} par process\-Add(), process\-Aff(), process\-Deref(), process\-Div(), process\-Minus(), process\-Mul(), process\-Ref(), process\-Ref\-Aff(), et process\-Sub().\index{CSymbol@{CSymbol}!isValid@{isValid}}
\index{isValid@{isValid}!CSymbol@{CSymbol}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}bool CSymbol::is\-Valid ()}\label{classCSymbol_323843bd738552f60279608d22a6b8e0}


Retourne si le symbole est valide ou non. 



D\'{e}finition \`{a} la ligne 114 du fichier symbols.cpp.

R\'{e}f\'{e}rences SYMBOLID\_\-NULL.

R\'{e}f\'{e}renc\'{e} par process\-Aff(), process\-Div(), process\-Eql(), process\-Grt(), process\-Low(), process\-Mul(), process\-Neq(), process\-Not(), process\-Op1And(), process\-Op1Or(), process\-Op2And(), et process\-Op2Or().

\subsection{Documentation des donn\'{e}es membres}
\index{CSymbol@{CSymbol}!id@{id}}
\index{id@{id}!CSymbol@{CSymbol}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf Symbol\-Id} {\bf CSymbol::id}\hspace{0.3cm}{\tt  [private]}}\label{classCSymbol_f9a16e35939a8d53bc553df3bb3d6c68}


Identifiant du symbole. 



D\'{e}finition \`{a} la ligne 37 du fichier symbols.h.

R\'{e}f\'{e}renc\'{e} par convert(), et get\-Id().\index{CSymbol@{CSymbol}!strid@{strid}}
\index{strid@{strid}!CSymbol@{CSymbol}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf Str\-Id} {\bf CSymbol::strid}\hspace{0.3cm}{\tt  [private]}}\label{classCSymbol_7ba8796f64bcc9877eda51059ad7293d}


Identifiant de nom de variable associ\'{e} (si existant). 



D\'{e}finition \`{a} la ligne 38 du fichier symbols.h.

R\'{e}f\'{e}renc\'{e} par CSymbol(), et get\-Str\-Id().\index{CSymbol@{CSymbol}!type@{type}}
\index{type@{type}!CSymbol@{CSymbol}}
\subsubsection{\setlength{\rightskip}{0pt plus 5cm}{\bf CType} {\bf CSymbol::type}\hspace{0.3cm}{\tt  [private]}}\label{classCSymbol_721b4272db2794b1893d9c40881a2db3}


Type du symbole. 



D\'{e}finition \`{a} la ligne 39 du fichier symbols.h.

R\'{e}f\'{e}renc\'{e} par convert(), convert2(), CSymbol(), et get\-Type().

La documentation de cette classe a \'{e}t\'{e} g\'{e}n\'{e}r\'{e}e \`{a} partir des fichiers suivants:\begin{CompactItemize}
\item 
{\bf symbols.h}\item 
{\bf symbols.cpp}\end{CompactItemize}
